// 1. 引入express
const express = require('express')

// 2. 创建应用对象
const app = express()

// 自定义中间件(应用级)
// 注意: 一次请求响应中,所有的req是同一个对象. 所有的res也是同一个对象
function middleWare(req, res, next) {
  //   console.log(req.params) // 注意: 中间件中无法获取到路由参数
  //  判断是否传递了查询字符串,name. 有name则放行,没有name则不放行.然后响应一个没有参数
  //   console.log(req.query)
  req.aaa = 1
  res.aaa = 2
  if (req.query.name) {
    next()
  } else {
    res.send('没有传递数据,拦截')
  }
}
// 使用中间件
app.use(middleWare)
// 3. 配置路由
// 需求: 浏览器给服务器发送请求,请求/a或/b要求,必须传递查询字符串,如果这个参数没有传递,则直接响应一个字符串==> '没有传递数据,拦截'
app.get('/a/:xxx?', (req, res) => {
  //   if (req.params.xxx) {
  //     res.send('/a响应的数据')
  //   }else{
  //     res.send('没有传递数据,拦截')
  //   }
  //   if (!req.params.xxx) {
  //     res.send('没有传递数据,拦截')
  //     return
  //   }
  //   res.send('/a响应的数据')
  //   if (!req.params.xxx) return res.send('没有传递数据,拦截')
  res.send('/a响应的数据')
})
app.get('/b/:xxx?', (req, res) => {
  console.log(req.aaa, res.aaa)
  //   if (!req.params.xxx) return res.send('没有传递数据,拦截')
  res.send('/b响应的数据')
})

// 4. 启动服务器
app.listen(5000, (error) => {
  if (error) console.log('服务器启动失败', error)
  else console.log('服务器启动成功')
})
